from tkinter import *

# 对于 061输入框.py ，它是一种简单直接的方法,只在需要获取值的时候才读取输入框的当前值
# 本例中，使用了双向绑定来实现输入框和标签的联动

root = Tk()
root.title("输入框双向绑定示例")
root.geometry('400x300')

# 创建StringVar变量
text_var = StringVar()

# 创建一个函数来监控变量的变化
def on_value_change(*args):
    # 实时显示输入的字符数
    char_count = len(text_var.get())
    count_label.configure(text=f"当前输入了 {char_count} 个字符")
    
    # 实时更新预览文本
    preview_label.configure(text=f"实时预览: {text_var.get()}")

# 创建输入框标签
input_label = Label(root, text="请输入文字:")
input_label.pack(pady=10)

# 创建输入框并绑定StringVar
txt = Entry(root, width=30, textvariable=text_var)
txt.pack(pady=5)

# 创建字符计数标签
count_label = Label(root, text="当前输入了 0 个字符")
count_label.pack(pady=5)

# 创建预览标签
preview_label = Label(root, text="实时预览: ", wraplength=350)
preview_label.pack(pady=10)

# 添加变量追踪
text_var.trace_add("write", on_value_change)

# 清空按钮
def clear_text():
    text_var.set("")  # 使用set方法清空

def default_text():
    text_var.set("默认文本")

clear_btn = Button(root, text="清空输入", command=clear_text)
clear_btn.pack(pady=5)

default_btn = Button(root, text="恢复默认", command=default_text)
default_btn.pack(pady=5)

root.mainloop()